package com.daisuxia.back.interceptor;
//package com.info.back.interceptor;
//
//import java.io.IOException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//
//import org.apache.commons.lang3.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
//
//import com.info.constant.Constant;
//import com.info.web.pojo.User;
//import com.info.web.pojo.UserLoginLog;
//import com.info.web.service.IUserLoginLogService;
//import com.info.web.service.IUserService;
//import com.info.web.util.TokenUtils;
//
//public class FrontContextInterceptor extends HandlerInterceptorAdapter {
//	Logger logger = LoggerFactory.getLogger(getClass());
//	private String loginUrl = "/gotoLogin";
//	@SuppressWarnings("unchecked")
//	private String getLoginUrl(HttpServletRequest request) {
//		StringBuilder buff = new StringBuilder();
//		String ctx = request.getContextPath();
//		String requestUrl = request.getRequestURL().toString();
//		if (request.getHeader("x-requested-with") != null
//				&& request.getHeader("x-requested-with").equalsIgnoreCase(
//						"XMLHttpRequest")) {
//			requestUrl = request.getHeader("Referer");
//		}
//		if (loginUrl.startsWith("/")) {
//			if (!StringUtils.isBlank(ctx)) {
//				buff.append(ctx);
//			}
//		}
//		int i = 0, start = 0, count = 3;
//		while (i < count && start != -1) {
//			start = requestUrl.indexOf('/', start + 1);
//			i++;
//
//		}
//		buff.append(loginUrl).append("?");
//		String retUrl = requestUrl.substring(start);
//		if (StringUtils.isNotBlank(retUrl)) {
//			Map<String, String[]> params = request.getParameterMap();//eclipse/myeclipse修改
//			if (params != null && params.size() > 0) {
//				int index = retUrl.indexOf("?");
//				if (index >= 0) {
//					retUrl = retUrl.substring(0, index);
//				}
//				retUrl += "?";
//				for (String key : params.keySet()) {
//					Object value = params.get(key);
//					Object v = null;
//					if ((value.getClass().isArray())
//							&& (((Object[]) value).length > 0)) {
//						if (((Object[]) value).length > 1) {
//							v = ((Object[]) value);
//						} else {
//							v = ((Object[]) value)[0];
//						}
//					} else {
//						v = value;
//					}
//					retUrl += key + "=" + v + "&";
//				}
//				retUrl = retUrl.substring(0, retUrl.length() - 1);
//			}
//		}
//
//		buff.append("returnUrl").append("=").append(retUrl);
//		return buff.toString();
//	}
//	
//	@Autowired
//	private IUserService userService;
//	@Autowired
//	private IUserLoginLogService userLoginLogService;
//
//	@Override
//	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
//			throws ServletException {
//		HttpSession session = request.getSession();
//		System.out.println("sessionId:===>" + session.getId());
//		if (null == session.getAttribute(Constant.FRONT_USER)) {
//			String token = request.getHeader("deviceId");
//			if (token == null || "".equals(token)) {
//				token = request.getParameter("deviceId");
//			}
//			if (token != null && StringUtils.isNotEmpty(token)) {
//				// 从数据库中根据token获取当前用户信息
//				Map<String, String> params = new HashMap<String, String>();
//				params.put("deviceId", token);
//				UserLoginLog loginLog = this.userLoginLogService.selectByParams(params);
//				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//				if (loginLog != null) {
//					// 解密token密文
////					Map<String, Object> tokenMap = TokenUtils.decryptToken(token);
//					// 没有被篡改
////					if (tokenMap.get("userId").equals(loginLog.getUserId().toString())) {
//						Date now = new Date();// 当前时间
//						Date effTime = loginLog.getEffTime();
//						try {
//							if (now.before(effTime)) {
//								// 当前token有效，更新有效时间
//								loginLog.setEffTime(effTime);
//								this.userLoginLogService.updateUserLoginLog(loginLog);
//								User user = this.userService.searchByUserid(Integer.parseInt(loginLog.getUserId()));
//								session.setMaxInactiveInterval(TokenUtils.effSecond);
//								session.setAttribute(Constant.FRONT_USER, user);
//								return true;
//							}
//						} catch (Exception e) {
//							e.printStackTrace();
//						}
////					}
//				}
//			}
////			request.setAttribute("msg", "未登录！");
////			response.setStatus(401);
//			logger.info("未登录");
//			return true;
//		}
//		return true;
//	}
//}